package com.angel.MicroSoftOffice;

import java.io.File;

import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.ComThread;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;

/**
 * @DESC 序列号 DBXYD-TF477-46YM4-W74MH-6YDQ8
 * @Author zhangzhenhua
 * @Date 2017年7月24日 下午4:28:57
 */
public class Example2 {
	static final int wdFormatPDF = 17;// PDF 格式

	public static void wordToPDF(String sfileName, String toFileName) {

		System.out.println("启动Word...");
		long start = System.currentTimeMillis();
		ActiveXComponent app = null;
		Dispatch doc = null;
		try {
			app = new ActiveXComponent("Word.Application");
			app.setProperty("Visible", new Variant(false));
			Dispatch docs = app.getProperty("Documents").toDispatch();
			doc = Dispatch.call(docs, "Open", sfileName).toDispatch();
			System.out.println("打开文档..." + sfileName);
			System.out.println("转换文档到PDF..." + toFileName);
			File tofile = new File(toFileName);
			if (tofile.exists()) {
				tofile.delete();
			}
			Dispatch.call(doc, "SaveAs", toFileName, // FileName
					wdFormatPDF);
			long end = System.currentTimeMillis();
			System.out.println("转换完成..用时：" + (end - start) + "ms.");

		} catch (Exception e) {
			System.out.println("========Error:文档转换失败：" + e.getMessage());
		} finally {
			Dispatch.call(doc, "Close", false);
			System.out.println("关闭文档");
			if (app != null)
				app.invoke("Quit", new Variant[] {});
		}
		// 如果没有这句话,winword.exe进程将不会关闭
		ComThread.Release();
	}

	public static void main(String[] args) {
		Example2 d = new Example2();
		String source = "c:/java-123.doc";
		String destination = "c:/java-123.pdf";
		source = "c:/17072523193576755985.doc";
		destination = "c:/17072523193576755985.pdf";

		d.wordToPDF(source, destination);
	}

}
